package com.example.embed.calcite;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

/**
 * Calcite嵌入式SQL查询演示应用主入口
 * <p>
 * 这是一个基于Spring Boot和Apache Calcite的嵌入式SQL查询演示应用，
 * 提供内存数据的SQL查询能力，支持自定义内存表、数据类型和日期时间函数等功能。
 * </p>
 *
 * @author zwg
 * @date 2025/7/7
 */
@SpringBootApplication
public class CalciteConsoleApplication {

    /**
     * 应用主入口方法
     *
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        SpringApplication.run(CalciteConsoleApplication.class, args);
    }

    /**
     * 配置OpenAPI文档信息
     * <p>
     * 设置API文档的标题、描述、版本等信息，用于生成OpenAPI 3.0规范的API文档
     * </p>
     *
     * @return OpenAPI配置对象
     */
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("Calcite嵌入式SQL查询API")
                        .description("基于Apache Calcite的嵌入式SQL查询功能演示API文档")
                        .version("1.0.0"));
    }
}
